package com.aishua.fire.service.impl;

import java.util.Date;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import com.aishua.fire.common.constant.SoftdelConstants;
import com.aishua.fire.entity.loginhistory.AddLoginHistoryInfo;
import com.aishua.fire.entity.loginhistory.UpdateLoginHistoryInfo;
import com.aishua.fire.jpa.LoginHistoryDao;
import com.aishua.fire.jpa.entity.LoginHistory;
import com.aishua.fire.service.LoginHistoryService;


@Service
public class LoginHistoryServiceImpl implements LoginHistoryService {
	
	@Autowired
	private LoginHistoryDao loginHistoryDao;
	
	@Override
	public void save(AddLoginHistoryInfo loginHistoryInfo) {
		LoginHistory loginHistory = new LoginHistory();
		loginHistory.setCreateDate(new Date());
				loginHistory.setClientIspName(loginHistoryInfo.getClientIspName());
		loginHistory.setLoginName(loginHistoryInfo.getLoginName());
		loginHistory.setClientIpCity(loginHistoryInfo.getClientIpCity());
		loginHistory.setLoginStatus(loginHistoryInfo.getLoginStatus());
		loginHistory.setClientIp(loginHistoryInfo.getClientIp());
		loginHistory.setLoginPassword(loginHistoryInfo.getLoginPassword());


		loginHistoryDao.save(loginHistory);
	}

	@Override
	public void deleteLoginHistory(String loginHistoryId) {
		//修改为删除状态
		loginHistoryDao.softDeleteLoginHistory(loginHistoryId,SoftdelConstants.DEL_Y);
	}

	@Override
	public void update(UpdateLoginHistoryInfo loginHistoryInfo) {
		LoginHistory loginHistory = loginHistoryDao.findOne(Long.parseLong(loginHistoryInfo.getId()));
		loginHistory.setId(Long.parseLong(loginHistoryInfo.getId()));
		loginHistory.setClientIspName(loginHistoryInfo.getClientIspName());
		loginHistory.setLoginName(loginHistoryInfo.getLoginName());
		loginHistory.setClientIpCity(loginHistoryInfo.getClientIpCity());
		loginHistory.setLoginStatus(loginHistoryInfo.getLoginStatus());
		loginHistory.setClientIp(loginHistoryInfo.getClientIp());
		loginHistory.setLoginPassword(loginHistoryInfo.getLoginPassword());


		loginHistoryDao.saveAndFlush(loginHistory);
	}

	/**
	 * 查详情
	 */
	@Override
	public LoginHistory findLoginHistoryId(String loginHistoryId) {
		return loginHistoryDao.findOne(Long.parseLong(loginHistoryId));
	}

	/**
	 * 列表查询
	 */
	@Override
	public Page<LoginHistory> searchList(int page, int size) {
		Pageable pageable = (Pageable) new PageRequest(page, size);
		return loginHistoryDao.findAll(new Specification<LoginHistory>() {
            
			@Override
            public Predicate toPredicate(Root<LoginHistory> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                //Path<String> loginHistoryNoPath = root.get("loginHistoryNo");
                //Path<String> loginHistoryNamePath = root.get("name");
                //连接查询条件, 不定参数，可以连接0..N个查询条件
                //query.where(cb.equal(loginHistoryNoPath, loginHistoryNo), cb.like(loginHistoryNamePath, "%" + loginHistoryName + "%")); //这里可以设置任意条查询条件
                return null;
            }
        },pageable);
	}

}
